/**     
* @Title: MyInvocationSecurityMetadataSourceService.java   
* @Package me.security.example.security   
* @Description: TODO   
* @author xaoyaoyao
* @date 2017年8月23日 下午12:29:52
*/
package me.security.example.security;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.access.SecurityConfig;
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
import org.springframework.stereotype.Service;

/**
 * @ClassName: MyInvocationSecurityMetadataSourceService
 * @Description: TODO
 * @author xaoyaoyao
 * @date 2017年8月23日 下午12:29:52
 * 
 */
@Service
public class MyInvocationSecurityMetadataSourceService implements FilterInvocationSecurityMetadataSource {

	// 此方法是为了判定用户请求的url 是否在权限表中，如果在权限表中，则返回给 decide 方法，用来判定用户是否有此权限。如果不在权限表中则放行。
	// 因为我不想每一次来了请求，都先要匹配一下权限表中的信息是不是包含此url，
	// 我准备直接拦截，不管请求的url 是什么都直接拦截，然后在MyAccessDecisionManager的decide
	// 方法中做拦截还是放行的决策。
	// 所以此方法的返回值不能返回 null 此处我就随便返回一下。
	@Override
	public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
		Collection<ConfigAttribute> co = new ArrayList<ConfigAttribute>();
		co.add(new SecurityConfig("null"));
		return co;
	}

	@Override
	public Collection<ConfigAttribute> getAllConfigAttributes() {
		return null;
	}

	@Override
	public boolean supports(Class<?> clazz) {
		return true;
	}

}
